package br.com.diego.system.controller.alterarsenha;

import br.com.diego.system.controller.cadastrousuario.CadastroUsuarioFactory;
import br.com.diego.system.entity.usuario.Usuario;
import br.com.diego.system.manager.usuario.UsuarioManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;

public class AlterarSenhaBuilder {

    @Autowired
    private UsuarioManager usuarioManager;
    
    @Autowired
    private CadastroUsuarioFactory cadastroUsuarioFactory;
    
    private Usuario usuario;

    public void buildAlterar(AlterarSenhaVo alterarSenhaVo) {

        Assert.notNull(alterarSenhaVo, "Não foi possível recuperar os dados da tela.");
        Assert.notNull(alterarSenhaVo.getUsuarioVo(), "Não foi possível recuperar os dados do Usuário.");
        Assert.hasText(alterarSenhaVo.getAtualSenha(),"Senha Atual é um campo obrigatório.");
        Assert.hasText(alterarSenhaVo.getNovaSenha(),"Nova Senha é um campo obrigatório.");
        Assert.hasText(alterarSenhaVo.getConfirmacaoSenha(), "Confirmação de senha é um campo obrigatório.");
        Assert.isTrue(alterarSenhaVo.getUsuarioVo().getSenha().equals(alterarSenhaVo.getAtualSenha()), "Senha Atual Inválida.");
        Assert.isTrue(!alterarSenhaVo.getUsuarioVo().getSenha().equals(alterarSenhaVo.getNovaSenha()), "Nova Senha deve ser diferente da Anterior.");
        Assert.isTrue(alterarSenhaVo.getNovaSenha().equals(alterarSenhaVo.getConfirmacaoSenha()), "Confirmação de e-mail inválida.");

        usuario = new Usuario();
        
        usuario = usuarioManager.buscarPeloId(alterarSenhaVo.getUsuarioVo().getId());
        usuario.setSenha(alterarSenhaVo.getNovaSenha());    

        usuarioManager.salvar(usuario);
        
    }
   
}
